Computer systems at times need maintenance and/or upgrades. To implement such upgrades and configuration changes, the system must normally be taken out of service and made unavailable to users during the implementation of the upgrades and configuration changes. There are existing attempts to remedy or ease the impact of having to take such systems out of service for upgrades and configurations. These attempts can be referred to as high availability solutions or near zero downtime solutions. However, the approach of existing high availability solutions is to provide redundant systems (i.e., technical services) on the technical level only. That is, to provide an exact copy of the system by available technical means (e.g., storage mirroring and additional server hardware) that can be swapped with the original system in case of a failure. In this case, data semantics are not a subject of such solutions. Additionally, existing near zero downtime solutions for software upgrades require a finite system outage for data synchronization. That is, after the completion of the upgrade, the copy of the application data used during the upgrade is compared to the original data that was used just prior to the upgrade, and any differences between the two have to be reconciled.